package com.itheima.jobs;

import cn.hutool.core.collection.CollectionUtil;
import com.itheima.common.RedisConstant;
import com.itheima.common.utils.QiniuUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Set;

/**
 * @version V1.0
 * @author: yongjichu
 * @date: 2020/1/14 23:19
 * @description:
 */
//将这个类交给spring管理
@Component("clearImages")
public class ClearImages {
    //注入jedis连接池
    @Autowired
    JedisPool jedisPool;
    public void doClear(){
       //1.获取连接
        Jedis jedisPoolResource = jedisPool.getResource();
        //2.调用方法比较两个集合的差别
        //注意：官方文档上已经讲啦，数据多的key放在前面
        //得到的set集合就是两个集合里不同的数据，即就是要删掉的数据
        Set<String> nedeDeleteData = jedisPoolResource.sdiff(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
        //判断集合是否为空
        if(CollectionUtil.isNotEmpty(nedeDeleteData)){
            String[] keyList=nedeDeleteData.toArray(new String[]{});
           /* //遍历集合删除图片
            for (String fileName:nedeDeleteData){
                //删除七牛里面的图片
                QiniuUtils.deleteFileFromQiniu(fileName);
                //删除redis中的数据
                jedisPoolResource.srem(RedisConstant.SETMEAL_PIC_RESOURCES,fileName);
            }*/
           //将以上的循环删除改成批量删除
            //1.批量删除七牛云的图片
            QiniuUtils.deleteBatchFileFromQiNiu(keyList);
            //批量删除redis中的图片
            jedisPoolResource.srem(RedisConstant.SETMEAL_PIC_RESOURCES,keyList);
        }
        //将连接换回连接池
        jedisPoolResource.close();
    }
}
